<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 
           1. 通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数，然后输出该数组。试编程。

        // 结果
        [
        [1, 2, 3, 4, 5],
        [6, 7, 8, 9, 10],
        [11, 12, 13, 14, 15],
        [16, 17, 18, 19, 20],
        [21, 22, 23, 24, 25]
        ]
        
        */

        // var arr = [1,2,3,4]

        // var arr1 = [];
        // for(var i=1;i<=25;i++){
        //     arr1.push(i);
        // }

        // // console.log(arr1);
        // var arr2 = [];
        // var containerArr = [];
        // for(var j=0;j<arr1.length;j++){
        //     // console.log(arr1[j]);
        //     var val = arr1[j];
        //     arr2.push(val);
        //     if(val%5==0){
        //         console.log(arr2);
        //         containerArr.push(arr2);
        //         arr2 = [];
        //     }
        // }
        // console.log(containerArr);




        /* 
           2. 编写函数has(arr , 60) 判断数组中是否存在60这个元素，返回布尔类型

            var arr = [1, 2, 3, 60]
            var arr2 = [1, 2, 3]

            function has() {
            // code in here ...
            }

            console.log(has(arr, 60)) // true
            console.log(has(arr2, 60)) /
        
        */
    //     var arr = [1, 2, 3, 60]

    //     function has(arr,val){
    //        if( arr.indexOf(val) == -1){
    //            return false;
    //        }else{
    //            return true;
    //        }
    //     }

    //    console.log(  has(arr,4));


    //   3. 数组去重  arr = [1,2,1,3,4,5,6,3,3,1,2];
        // 把数组中重复的元素去掉 新生成数组 [1,2,3,4,5,6]
        // 方式一
    // var arr = [1,2,1,3,4,5,6,3,3,1,2];
    // var arr2 = [];
    // for(var i=0;i<arr.length;i++){
    //     if(arr2.indexOf(arr[i])==-1){  //用要添加的元素  看下是否已经添加到 arr2里 如果没有添加 没有找到 那么就push
    //         arr2.push(arr[i]);
    //     }
    // }

    // console.log(arr2);


    /* 
        第一次循环 ： arr2 = [];  arr[0] = 1  进入判断  [].indexOf(1) === -1 进入if 把 1添加到 arr2里
                    arr2 = [1];
        第二次循环 : arr2 = [1] ; arr[1] = 2  进入判断  [1].indexOf(2)===-1  进入if  把 2 添加到arr2里 
                    arr2 = [1,2];
        第三次循环 : arr2 = [1,2]; arr[2] = 1 进入判断 [1,2].indexOf(1)===0 不进入if判断
        第四次循环 ： arr2 = [1,2];。。。。。

    
    
    
    
    */




    // 方式二： 对象的键名不能重复 
    // var arr = [1,2,1,3,4,5,6,3,3,1,2];
    // var obj = {};
    // for(var i=0;i<arr.length;i++){
    //     var val = arr[i];
    //     obj[val] = val;
    // }
    // // console.log(obj);
    // // 循环对象
    // var arr2 = [];
    // for(var key in obj){
    //     arr2.push(parseInt( key ));
    // }
    // console.log(arr2);

    /* 
        var obj = {
            1:1,
            2:2,
            1:1,
            3:3,
            4:4,
            ....
            3:3
        }
    
    
    
    */


    // var obj = {
    //     1:1,
    //     2:2,
    //     1:1,
    //     3:3,
    //     2:2
    // }
    // console.log(obj);





    // 第三种 ：扩展
    // 集合：类似数组 集合里的元素不能重复；
    // var set = new Set([1,2,3,2,3,4,3]);
    // console.log(set);
    var arr = [1,2,1,3,4,5,6,3,3,1,2];
    // 先把数组转集合
    var set = new Set(arr);
    // console.log(set);
    // 把集合转回数组；
    var arr2 =  Array.from(set);
    console.log(arr2);
    </script>
</body>
</html>